// 1.0 导入http.js 文件
import http from "./http";
import { CURRENT_CITY_KEY } from "./config";

// 2.0 封装每个阶段的数据获取方法
// 2.0.1 封装获取轮播图数据方法
export async function get_Swiper_Data() {
  let res = await http.get("/home/swiper", null);
  return res.data;
}

// 3.0 定义获取租房小组的数据
export async function get_Group_Data(
  parmas = { area: "AREA|88cff55c-aaa4-e2e0" }
) {
  let res = await http.get("/home/groups", parmas);
  return res.data;
}

// 4.0 定义获取新闻资讯的数据
export async function get_News_Data(
  params = { area: "AREA|88cff55c-aaa4-e2e0" }
) {
  let res = await http.get("/home/news", params);
  return res.data;
}

// 5.0 定义获取当前城市对象数据的方法
export async function get_City_Data(params = { name: "广州" }) {
  let res = await http.get("/area/info", params);
  return res.data;
}

// 6.0 获取所有城市的数据
export async function get_All_City_List(params = { level: 1 }) {
  let res = await http.get("/area/city", params);
  return res.data;
}

// 7.0 获取热门城市
export async function get_Hot_City_List() {
  let res = await http.get("/area/hot");
  return res.data;
}

// 8.0 根据城市/区/镇的id获取到下一层的房源数据
export async function get_House_List(
  params = {
    id: "AREA|e4940177-c04c-383d",
  }
) {
  let res = await http.get("/area/map", params);
  return res.data;
}

// 9.0 根据小区id获取到房源信息数据
export async function get_House_List_By_CityID(
  params = {
    cityId: "AREA|746a00fd-ef36-fff8",
  }
) {
  let res = await http.get("/houses", params);
  return res.data;
}

// 10.0 根据房源id，获取该房源的详细信息对象
export async function get_House_Info(housecode) {
  let res = await http.get("/houses/" + housecode, null);
  return res.data;
}

//  封装获取当前项目所存储的城市
export async function get_Current_CityData() {
  // 1.0 判断本地存储如果有城市数据，则直接拿出来返回
  let cityJson = localStorage.getItem(CURRENT_CITY_KEY);
  if (cityJson) {
    return JSON.parse(cityJson); // {label,value}
  }

  // 2.0 如果本地存储没有城市数据，那么就通过百度api获取到当前城市后存储到本地存储中，再返回
  // 1.0 在react组件中要使用百度地图的BMap对象，必须使用window来调用，否则访问不到
  var myCity = new window.BMap.LocalCity();
  myCity.get(async (result) => {
    // alert(result.name); // 获取到了当前城市名称

    // 2.0 调用/area/info?name=广州市 去服务器获取到广州的对象数据:
    /*{
       "label": "广州",
       "value": "AREA|e4940177-c04c-383d"
     }*/
    let cityObj = await get_City_Data({ name: result.name }); //传入百度地图获取到的城市名称

    // 2.0.1 将当前城市名称设置给状态属性cityName
    let { label, value } = cityObj.body;

    // 3.0 将其保存到loaclStrage中
    localStorage.setItem(CURRENT_CITY_KEY, JSON.stringify({ label, value }));

    // 4.0 返回数据
    return { label, value };
  });
}
